# -*- coding: UTF-8 -*-
import argparse
import sys
import json
#目前的region库是这个揍性的
# 全球
#   大中华
#     中国大陆
#       北京市
#       天津市
#       河北省
#         保定市
#         ...
#         其他市
#       山西省
#       ...
#     香港
#     澳门
#     台湾
#   亚洲其他
#   大洋洲
#   欧洲
#   ...


evict_stids = ['000000000000000000000001', '000000000000000000000002', '000000000000000000000003', '000000000000000000000004', '000000000000000000000005', '000000000000000000000006', '000000000000000000000007']

province_roots = ['000000000000000000000008','000000000000000000000001', 'FFFFFFFFFFFFFFFFFFFFFFFF']#parent_id是这些的st当做省

arg_parser = argparse.ArgumentParser(description="将Region文件结合Lang文件生成 地域树 所需要的json文件.")

arg_parser.add_argument("region_file", type=open)
arg_parser.add_argument("lang_file", type=open)
arg_parser.add_argument("out_file", type=argparse.FileType('w'))
arg_parser.add_argument("-i", "--ignore-cant-find", type=bool, default=False)
arg_parser.add_argument("--is_main", type=bool, default=False) #region文件第三列isMain, 我也不知道干啥的, 默认不输出了

args = arg_parser.parse_args()

#read lang
lang_dic = {} #stid -> name

for line in args.lang_file:
    line = line.strip('\n')
    id, name = line.split(',')
    lang_dic[id] = name

args.lang_file.close()

#read region
result_list = []

for line in args.region_file:
    line = line.strip('\n')
    id, parent_id, isMain = line.split(',')
    if id in evict_stids:
        continue
    if parent_id in new_roots:
        parent_id = "-1"

    name = lang_dic[id]
    if name:
        a_region = {"id":id, "name":name, "parent_id":parent_id}
        if args.is_main:
            a_region["is_main"] = is_main
        
        result_list.append(a_region)
    else:
        if args.ignore_cant_find:
            print "ignore region that can't be found in lang.",line
        else:
            print "region can't be found in lang.",line
            sys.exit(1)
    pass

    
args.region_file.close()

#dump json
result = json.dumps({"data":result_list}, ensure_ascii=False, encoding="utf-8")
args.out_file.write(result)
args.out_file.close()